Java - Java의 상속, 인터페이스, 접근제어자

April 20, 2020

Java의 상속, 인터페이스, 접근제어자

상속

자바에서 상속은 하나의 클래스에서 이 클래스를 확장하여 새로운 클래스를 만들어 나가는 과정을 말한다. 여러개의 클래스를 확장할 수 있는 것이 아니라 단일 상속으로 확장된다. 단, 인터페이스의 경우 다중 상속이 가능하다.

상위클래스 내의 멤버변수나 메소드가 private접근제어자를 사용할때는 그 멤버를 상속할 수 없다.

Java의 상속은 다음과 같이 한다.

[public/abstract/final] class subClassName extends superClassName{

}

자바는 단일상속만을 허용하며, 인터페이스를 사용할때만 다중 상속이 가능하다.

this

class 내의 메서드에서 자신의 객체의 프로퍼티와 메서드의 지역변수, argument와 구분하기 위해서는 this 예약어를 사용한다.

super

생성자나 메소드의 매개변수가 상의 클래스내의 객체 변수명과 동일한 이름을 사용할 때 사용한다. 또한 하위 객체에서 상위객체를 초기화 해야 할때도 사용한다.

overriding

상위 클래스와 하위 클래스 각각 안에 동일한 이름의 메소드가 있을 때, 상위 클래스로 부터 하위 클래스로 상속되는 메소드는 무시되고, 하위클래스의 메소드가 정의 된다. 단, private메소드나 final 메소드는 불가능 하다.

interface

인터페이스란 클래스의 골격만 정의한 것이다. 종단(final) 변수인 상수와 추상 메소드로 구성된 클래스이다. 클래스 내의 인퍼페이스 구현을 위해 implement 문을 사용한다. 인터페이스의 개념을 사용하면 자바에서 허용하지 않는 다중 상속이 가능하게 된다.

접근제어자는 기본적으로 public 이다.

인터페이스는 메소드를 구현하지 않고, 선언부만 정의한다.

인터페이스 내에서 선언된 변수는 public static final 로 자동으로 설정되며, 메서드는 public abstract 로 선언된다.

[인터페이스 접근 제한자] interface interfaceName [extends interfaceName]{

}

이를 구현할때는

class className [extends 상위클래스] implements interfaceName{

}

의 꼴로 구현한다.

인터페이스로 다중 상속을 할때는 extends 예약어를 사용한다.

Abstract class

실행문은 없고, 선언은 되어있는 한개이상의 추상메소드로 구성된클래스로서, 클래스 내에 추상 메소드가 하나라도 있으면 해당 클래스를 추상 클래스로 선언해야 한다.

생성자, static메소드, private메소드는 추상화 불가.

추상클래스 객체를 생성시킬수는 없지만 변수로서 선언은 가능하다.

abstract class className{
    abstract void methodName();
}

종단 클래스

더이상의 상속을 원하지 않을때, 사용하는 클래스이다.

final class className{
    
}

접근제어자

클래스, 변수, 메소드 앞에서 사용된다. 종류엔 클래스 접근 한정자, 필드접근 한정자, 생성자 접근 한정자, 메소드 접근 한정자 등이 있다.

다형성

임의의 객체가 다른 객체를 참조할 수 있는 것이다. 하나의 모습을 가지고 여러 형태로 보일수 있는 특징이 있는데, 이를 상위클래스에서 인터페이스로 제공하고, 하위클레스에서 각각 구체적으로 정의 하였을 때, 상황에 맞추어 해당 기능이 각각의 기능에 맞게 사용된다는 것이다.

여러 클래스들 사이에서 상속 관계가 있을때, 하위클래스에서 상위클래스로의 형 변환은 가능하나, 그 반대는 불가능 하다.


Written by Juyeong Byeong . github